package com.cman777.springc.redis.annotation;


import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @author chenzhicong
 * @time 2019/11/11 0:31
 * @description 用于设置缓存并把缓存的结果直接响应
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RedisCache {
    /**
     * key的前缀
     * @return
     */
    @NotBlank
    String keyPrefix();

    /**
     * 盐
     * spel表达式
     * @return
     */
    String salt() default "'0'";

    /**
     * @return 缓存保留时间,单位秒
     */
    @Min(1)
    long ttl();

    /**
     * 时间单位
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 结果为null时，是否放入redis
     * @return
     */
    boolean allowNull() default false;



}
